package com.wjw.java.io;

import java.io.Serializable;

/**
 * 供对象输入流,输出流使用
 * 细节：
 * 1.读写顺序要保持一致
 * 2.序列化和反序列化的对象,需要实现Serializable接口
 * 3.序列化类中建议添加:SerialVersionUID,为了提高版本的兼容性
 * 4.序列化对象时,默认将所有的属性都进行了序列化,除了static和treansient修饰的成员
 * 5.序列化对象时,要求里面的属性类型也需要实现序列化接口:使用基本类型的包装类即可
 * 6.序列化具备可继承性,也就是如果某类实现了序列化,它的所有子类也默认实现了序列化
 */
public class Students implements Serializable {
    private static final long SerialVersionUID = 1L;//序列化的版本号,为了提高版本的兼容性
    private Long id;
    private String name;
    private Double score;

    private static String str1;//static修饰的属性不被序列化
    private transient String str2;//transient修饰的属性不被序列化

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getScore() {
        return this.score;
    }

    public void setScore(Double score) {
        this.score = score;
    }

    public static String getStr1() {
        return Students.str1;
    }

    public static void setStr1(String str1) {
        Students.str1 = str1;
    }

    public String getStr2() {
        return this.str2;
    }

    public void setStr2(String str2) {
        this.str2 = str2;
    }

    public Students() {
    }

    public Students(Long id, String name, Double score,String str1,String str2) {
        this.id = id;
        this.name = name;
        this.score = score;
        this.str1 = str1;
        this.str2 = str2;
    }

    //这里str1需要手动写一些
    @Override
    public String toString() {
        return "Students{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", score=" + score +
                ", str1='" + str1 + '\'' +
                ", str2='" + str2 + '\'' +
                '}';
    }
}
